home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d6
/
xact.arc
/
X16SHARE.DOC
< prev
next >
Wrap
Text File
|
1991-04-28
|
78KB
|
2,162 lines
Shareware XACT-16C
The Hewlett-Packard Compatible
Programmer's Calculator
USER'S MANUAL
CalcTech Incorporated
13629 Bellevue-Redmond Rd., Suite 202
Bellevue, WA. 98005
Sales, 9:00AM-5:00PM Pacific time
206-643-1682
Tech Support,Info Line,24 Hour Voice Mail
206-527-9950
Description
This shareware version of XACT-16C is not a demo program! It is
a complete, full featured Programmer's Calculator for MS-DOS
computers, equivalent to the Hewlett-Packard HP-16C handheld
calculator.
Since it is a shareware program, you may make copies and
distribute them to your friends and co-workers, on bulletin board
systems, and so on. However, you may not modify this program or
documentation in any manner, nor may you distribute the program
or documentation for profit (handling fees are OK).
License Agreement
THE SOFTWARE HEREIN ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE PROGRAMS IS WITH YOU.
IN NO EVENT SHALL CALCTECH OR ANY OF IT'S OFFICERS, DIRECTORS,
SHAREHOLDERS, EMPLOYEES, AFFILIATES, OWNERS, OR OTHER RELATED
PARTIES BE LIABLE TO YOU OR ANY OTHER THIRD PARTY FOR DAMAGES
INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF OR THE INABILITY
TO USE THIS PRODUCT OR AS TO THE PERFORMANCE OF THIS PRODUCT EVEN
IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES IN
ADVANCE.
SOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY
FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES SO THE ABOVE LIMITATION
OR EXCLUSION MAY NOT APPLY TO YOU.
THIS AGREEMENT IS GOVERNED BY THE LAWS OF THE STATE OF
WASHINGTON.
Trademarks/Copyrights
HP-11C, HP-12C, and HP-16C are trademarks of Hewlett-Packard
PC-DOS, IBM-PC, PC-XT, PC-AT and PS/2 are trademarks of IBM.
MS-DOS, Microsoft, and Word are trademarks of Microsoft Corp.
Tornado Notes is a trademark of Micro Logic Corp.
Hotline is a trademark of General Information, Inc.
(C)Copyright 1986-1989, 1990 by CalcTech Inc. Specifications
herein are subject to change without notice.
- 2 -
Registration & Commercial Version Upgrade
When you register XACT-16C for only $28.00 + $4.00 shipping,
we'll mail you the COMMERCIAL VERSION UPGRADE to the program. It
contains a number of features not available in this shareware
version including:
o TSR RAM-Resident (Pop-Up) capability
o Pop-Up ASCII Table
o Mouse Support
o Import/Export data from an application
o Full programming. Programs may be saved as disk files.
o Simulated tape which may be viewed, printed, stamped
with messages, and saved to disk.
o Typeset printed user's manual
o Discounts on future upgrades and notice of new products
Or, you may wish to register all three XACT calculators: the
XACT-11C SCIENTIFIC, XACT-12C FINANCIAL, and XACT-16C PROGRAMMER,
for only $48.00 + $4.00 shipping, and receive COMMERCIAL VERSION
UPGRADES for all three calculators.
Why not register today?
- 3 -
XACT SERIES CALCULATORS - REGISTRATION ORDER FORM
+------+----------------------------------------+----------+----------+
| Quan | Description | Price | Total |
+======+========================================+==========+==========+
| | | | |
| | XACT-11C Scientific Calculator | $28.00 | |
+======+========================================+==========+==========+
| | | | |
| | XACT-12C Financial Calculator | $28.00 | |
+======+========================================+==========+==========+
| | | | |
| | XACT-16C Programmer's Calculator | $28.00 | |
+======+========================================+==========+==========+
| | SPECIAL OFFER! | | |
| | All 3 (XACT-11C, XACT-16C, XACT-16C) | $48.00 | |
+======+========================================+==========+==========+
| | |
| WA. state residents add 8.1% sales tax | |
+========================================+==========+
| | |
Mail this form to: | Shipping/Handling | $4.00 |
+===================+==========+
CalcTech, Inc. Total | |
13629 Bellevue-Redmond Rd. Suite 202 Amount | |
Bellevue, WA. 98005 Enclosed +==========+
(206) 643-1682
Your Name: ______________________________ Phone: _____________________
Company (if applicable)________________________________________________
Address: ______________________________________________________________
City: ________________________________ State __________ Zip __________
[ ] Check Enclosed [ ] VISA [ ] Mastercard
Credit card #:____________________________________ Exp. Date: ____/____
Signature: ____________________________________________________________
Cardholder's name: ____________________________________________________
- 4 -
! ! ! ! P L E A S E R E A D T H I S ! ! ! !
This user's manual contains complete documentation for the
COMMERCIAL VERSION of XACT-16C. As such, some of the features
described within this manual will not be available with the
SHAREWARE VERSION of the program included on this disk.
We have included documentation for the COMMERCIAL VERSION UPGRADE
so that should you find benefit from the use of these programs
and decide to register (and we hope you will), you would have a
good idea of what to expect from the COMMERCIAL VERSION UPGRADE.
Please note that this is not the actual commercial version
documentation but rather a disk based "reprint". Should you
decide to register, you will receive a complete typeset printed
manual of the product(s).
XACT SERIES CALCULATORS are shareware, not freeware. Payment is
voluntary and on the "honor system". We ask that you register
the product(s) if after a short period of use, you find them
useful in your work. We hope that you appreciate the "try before
you buy" concept and that you will register.
Anyone who has ever purchased expensive (or even inexpensive)
software can attest to the frustration of being "burned" by a
lousy product. We think XACT SERIES CALCULATORS are excellent
products but we're giving you the opportunity to judge for
yourself. If you agree, please take a moment to register.
- 5 -
TABLE OF CONTENTS
Section Title Page
1 Getting Started .......................................... 8
1.1 Introduction ......................................... 8
1.2 Other Guides ......................................... 8
1.3 System Requirements .................................. 9
1.4 Installing XACT-16C and Making Backups ............... 9
1.5 Command Line Options & Changing Hot Keys ............. 9
2 Loading XACT-16C .......................................... 11
2.1 XACT-16C Shareware Version ........................... 11
2.2 XACT-16C as a RAM Resident Program ................... 11
2.3 XACT-16C as a Removable RAM Resident Program ......... 11
2.4 XACT-16C as a standalone DOS program ................. 12
3 XACT-16C Basics ........................................... 13
3.1 Keyboard Conventions ................................. 13
3.2 Function Key Usage ................................... 13
3.3 Prefix Keys .......................................... 13
4 Features (Commercial Version) ............................. 14
4.1 Getting Help ......................................... 14
4.2 Viewing the Tape ..................................... 14
4.3 Feeding a Result ..................................... 14
4.4 Stamping the Tape .................................... 14
4.5 Printing the Tape .................................... 15
4.6 Storing the Tape ..................................... 15
4.7 Loading a Program .................................... 15
4.8 Storing a Program .................................... 15
4.9 Importing Data from an Application ................... 16
4.10 ASCII Table .......................................... 16
5 Using XACT-16C ............................................ 17
5.1 Prefix Keys .......................................... 17
5.2 Clearing the Display and Prefix Keys ................. 17
5.3 Entering Numbers ..................................... 17
5.4 Short Cut Keys ....................................... 18
5.5 RPN Logic, the Stack and the ENTER Key ............... 18
5.6 Stack Operations ..................................... 19
5.7 Memories and Memory Operations ....................... 19
5.8 The Index Register and Using Memories Indirectly ..... 20
5.9 Modes of Operation and Word Size ..................... 20
5.10 1's Compliment Numbers ............................... 21
5.11 2's Compliment Numbers ............................... 21
- 6 -
Section Title Page
5.12 Unsigned Numbers ..................................... 21
5.13 Word Size ............................................ 21
5.14 "SHOW" Functions ..................................... 22
5.15 Display Windows ...................................... 22
5.16 Flags ................................................ 23
5.17 Status ............................................... 24
6 Arithmetic, Bit Manipulation, and Logical Functions ....... 25
6.1 Addition and Subtraction ............................. 25
6.2 Multiplication and Division .......................... 25
6.3 Remainder after Division ............................. 25
6.4 Square Root .......................................... 26
6.5 Absolute Value ....................................... 26
6.6 Logical Functions .................................... 26
6.7 Bit Functions ........................................ 27
6.8 Summing Bits ......................................... 28
6.9 Masking .............................................. 28
6.10 Left Justify ......................................... 28
7 Shifting and Rotating Bits ................................ 29
7.1 Shift Instructions ................................... 29
7.2 Rotate Instructions .................................. 29
8 Floating Point Mode ....................................... 30
8.1 Converting to Floating Point Mode .................... 30
8.2 Floating Point Calculations .......................... 30
8.3 Returning to Integer Mode ............................ 31
9 Programming XACT-16C ...................................... 32
9.1 Introduction to Programming .......................... 32
9.2 Entering a Program ................................... 32
9.3 Labels in Programs ................................... 33
9.4 Using Subroutines .................................... 34
9.5 Returning From a Program or Subroutine ............... 34
9.6 Entering Data and the Run/Stop Key ................... 34
9.7 Branching Using the Index Register ................... 35
9.8 Program Loops Using the Index Register ............... 35
9.9 Program Loops and Branches Using the X and Y Registers 36
9.10 Branching Using Flags ................................ 36
9.11 Branching On Bit Set/Clear ........................... 37
9.12 The Single-Step Instruction .......................... 37
9.13 Moving to a Program Line Number ...................... 38
10 Appendix .................................................. 38
10.1 Error Conditions ..................................... 38
- 7 -
1 Getting Started
1.1 Introduction
XACT-16C is a software emulation of the famous Hewlett-Packard
HP-16C. If you are familiar with the HP-16C, you will find that
you already know how to use XACT-16C. If not, you'll find
XACT-16C easy to learn and use. It will become an invaluable
tool in your work.
XACT-16C is a RAM resident program (Commercial Version). It
remains loaded in your computer's memory ready to "pop-up" at the
activation of a "hot key", even if you're running another program
at the time. XACT-16C can also be run as a stand-alone DOS
program, if desired.
If you are already familiar with DOS and with the HP-16C, you may
only need to read Chapters 2 and 3. This will provide enough
information to get you started.
If you are new to DOS and/or the HP-16C, you may wish to read, or
at least skim, Chapters 1 through 6.
NOTE:
A number of the function keys on the XACT-16C use graphics
characters to represent them. Because this disk-based shareware
documentation is printed in ASCII text mode, some function keys
cannot be accurately shown in this file. We've tried our best to
emulate the look of the graphics symbols and to make it easy to
infer which functions are intended from the context of the
Documentation.
1.2 Other Guides
There are a number of guides and references available for the
HP-16C that can be used with XACT-16C as well. These are
generally available in bookstores and other places where Hewlett-
Packard calculators are sold. Some of these publications are
listed below
"HP-16C Owner's Handbook and Problem Solving Guide" Covers
general operations, functions, applications, and programming of
the HP-16C. Published by the Hewlett-Packard Company.
"An Easy Course in using the HP-16C" by Ed Keefe. Published by
Grapevine Publishing, Inc. P.O. Box 118, Corvallis, OR, 97339.
- 8 -
1.3 System Requirements
To operate the XACT-16C calculator, you will need an IBM PC, PC-
XT, PC-AT, PS/2, or close compatible equipped with at least the
following:
256K RAM
One floppy disk drive
PC-DOS or MS-DOS version 2.00 or later
1.4 Installing XACT-16C and Making Backups
You should make a copy of the programs contained on the XACT-16C
diskette for backup purposes. Use the DOS "copy" command to copy
all the files to another diskette or to your hard disk. There may
be a file named README.DOC on your disk. If so, you should
examine it using your word processor or the DOS "type" command.
You may wish to install XACT-16C in your AUTOEXEC.BAT file so
that it's automatically ready each time you power up or reboot
your computer. If you are unfamiliar with an AUTOEXEC.BAT file,
see your DOS manual.
1.5 Command Line Options/Changing Hot-Keys (Commercial Version)
A command line option is an additional command typed when you
first load XACT-16C. There are several of these options
available. For example, if you wish to save memory space by
running XACT-16C in non RAM-Resident mode, you would use the
nopop command line option, i.e.:
x16 /nopop [ENTER]
([ENTER] means press the ENTER key). You can also change the
invocation "hot-key" using a command line option. Valid hot-key
definitions are Alt-Shift-P (default), Alt-P, and Alt-Ctrl-P. For
example, to change the invocation "hot-key" from it's default
setting of Alt-Shift-P to Alt-P, and also change the tapefile
name to test.txt in the \bin directory:
x16 /alt-p /tapefile=\bin\test.txt
- 9 -
The following is a list of available command line options:
(Commercial Version only)
/nopop Run XACT-16C in non RAM Resident mode.
/mono Force XACT-16C into monochrome mode.
/wsize= Set the machine word size on startup.
/radix= Set radix on startup. Radix types are
h,d,o,b, or f. (Hex,dec,oct,bin,float).
/tapefile= Name of file used to save the tape.
/alt-p Change the invocation key to Alt-P.
/alt-ctrl-p Change the invocation key to Alt-Ctrl-P.
/nomouse Disable mouse operation.
- 10 -
2 Loading XACT-16C
2.1 XACT-16C shareware version
To load the Shareware XACT-16C, at the DOS prompt type:
x16share [ENTER]
2.2 XACT-16C as a RAM Resident program (Commercial Version)
To load XACT-16C, at the DOS prompt type:
x16 [ENTER]
You will see the copyright message appear on the screen. The
computer will then return to the DOS prompt and appear as if
nothing had happened. However, the XACT-16C calculator has now
been loaded into your computer's memory and is ready to pop-up at
the activation of the hot key. To activate XACT-16C, press:
Alt-Shift-P
XACT-16C will now appear on your screen, ready to perform
calculations. To exit from XACT-16C, press the Esc key.
2.3 XACT-16C as a Removable RAM-Resident Program (Commercial
Version)
When XACT-16C is loaded as a RAM Resident program as in section
2.1 above, it remains loaded in your computer's memory until your
computer is rebooted or powered off. There is another way to
install XACT-16C in such a way that it may be removed memory
without rebooting. To do so, you must use the TSRADD.COM and
TSRDROP.COM utilities provided. Using this method, to install
XACT-16C, you would type at the DOS prompt:
tsradd x16 [ENTER]
x16 [ENTER]
In fact, you may load RAM-Resident programs from other vendors as
well using the TSRADD.COM utility. For example, to load other
vendor's TSR's such as Tornado Notes and Hotline, you would type:
tsradd tn [ENTER]
tn [ENTER]
tsradd hotline [ENTER]
hotline [ENTER]
- 11 -
If you aren't running these programs from your current directory,
be sure to provide a complete pathname, or use the PATH command
provided with DOS.
To remove your memory resident programs, use the TSRDROP.COM
utility. It is necessary to drop your TSR's in the reverse order
that they were added. When you run TSRDROP.COM, the utility will
prompt you with the next TSR to be removed from memory. Press
ENTER to confirm the drop or Esc to exit the utility.
2.4 XACT-16C as a Stand Alone Program (Commercial Version)
XACT-16C defaults to being a RAM Resident program, but can also
be run as a stand-alone DOS program. To run XACT-16C as a stand-
alone program, type:
x16 /nopop [ENTER]
- 12 -
3 XACT-16C Basics
3.1 Keyboard Conventions
Throughout this manual, XACT-16C function keys are denoted within
a box. For example, the function key for a left shift (SL) is
shown as [SL]. In the case of function keys which require a
prefix key (discussed in the next section), the prefix key is not
given in this manual since it can easily be determined.
Keys on the PC keyboard are listed in this manual using single
quotes such as 'a'. Numbers to be entered into XACT-16C are
shown in normal type, except for the hex numbers A through F
which are shown as function keys.
3.2 Function Key Usage
XACT-16C has approximately 70 different function keys arranged in
the same ordering as on the HP-16C. Function keys are arranged
in groups of up to 3 functions per key; an upper, a lower and a
middle function all correspond to one function key. The upper
and lower functions are invoked by first pressing a prefix key
(discussed in the next section) and then the function key. The
middle function does not require the use of a prefix key. The PC
keystroke corresponding to function key is shown immediately to
the left of the function box.
The first row of function keys use the PC keys F1 through F10.
The second through fourth rows use the alphabetic characters as
arranged left to right on your PC keyboard.
For example, the XACT-16C's [Sto] (store) function key is mapped
to the letter 'v' on the PC keyboard. Likewise, the [ A ]
function key is invoked by pressing F1.
3.3 Prefix Keys
The left and the right shift keys on the PC keyboard operate as
prefix keys, functionally equivalent to the gold [ f ] and the
blue [ g ] keys on the HP-16C. They let you activate the upper
and lower sets of functions assigned to a function key. The left
shift key on the PC is used as a prefix key to activate the upper
set of functions. The right shift key is used as a prefix key to
activate the lower set of functions. For example, to invoke the
[SR] function, you would press and release the left shift key,
then press F2. To invoke the [ASR] function, you press and
release the right shift key, then F2. Likewise, to invoke the
[sqrtx] function, you would press and release the right shift
key, then press 't'.
- 13 -
4. Features (Commercial version only)
4.1 Getting Help
A Help menu is available when you are working with XACT-16C. To
obtain help press:
Alt-F1
An information screen will appear in a window. The help menu can
be removed by pressing F1 again.
4.2 Viewing the Tape
XACT-16C provides a simulated tape display which keeps a record
of your calculations as you perform them. To view the tape
press:
Alt-F2
The tape will appear in a window. To remove the tape, press F2
again.
4.3 Feeding a Result
To feed the result of a calculation into the program you're
running press:
Alt-F3
The calculator will disappear and the number in the display will
be fed to your application.
4.4 Stamping the Tape
To stamp a message on the simulated tape press:
Alt-F4
The message will appear on the tape as well as the printer or
tape disk file if either of these options are being used.
- 14 -
4.5 Printing the Tape
To print the tape as you make calculations press:
Alt-F5
To turn off printing, press F5 again.
4.6 Storing the Tape
The simulated tape may be saved to a disk file as you make
calculations. Each time you use XACT-16C, calculations are
appended to the tape file. To store the tape, press
Alt-F6
The tape will be saved under the name X16.TAP in the current
directory. If you change directories, a different tape file with
the same name will be used. If you wish to use a different name
for your tape file, use the command line option
/tapefile=filename where filename is any valid DOS filename which
can include a path (see section 1.6).
4.7 Loading a Program
To load a program previously saved press:
Alt-F7
A window will appear requesting a file name. Enter the DOS
filename of the program you wish to retrieve.
4.8 Storing a Program
XACT-16C allows you to save programs as disk files. To save a
program on disk, press:
Alt-F8
A window will appear prompting you for comments. You can enter
up to 3 lines of comments, associated with the program you are
saving. Press the Esc key after you have entered any comments.
Another window will appear prompting you for a filename. Enter
any valid DOS filename.
- 15 -
4.9 Importing Data from an Application
You can "import" data from the screen of the previous program you
were running before popping-up XACT-16C. For instance, you may
be working with a spreadsheet or word-processing program and wish
to add a series of numbers from the display screen. To import
data, press:
Alt-F9
You will see the screen you were working with before popping-up
XACT-16C. However, you have not returned to your previous
program. Use the up, down, left, or right arrow keys to move the
cursor to a number on the screen you wish to import. Then, press
F9 again to import the number into XACT-16C. It will appear just
as if you had typed it in by hand. If you now press F9 again,
you'll see the cursor will have moved down a row. This is to help
facilitate the importing of a "column" of numbers. If you wish
to accept the data where the cursor rests, again press F9. If
not, use the arrow keys to move to the desired location.
It isn't possible to import data from a screen if the screen is
in graphics mode. In this case, XACT-11C will sound a beep
indicating that it can't import a number. One commonly used
program which utilizes graphics mode is Microsoft Word. If you
use Word, you should use text mode. Pressing Alt-F9 in Word
allows you to switch between graphics and text modes.
4.10 ASCII Table
An ASCII table will appear in a window over XACT-16C by pressing
Alt-F10
Press the PgUp or PgDn keys to move through the ASCII table, or
press Esc to remove the ASCII table.
- 16 -
5. USING XACT-16C
5.1 Prefix Keys
The left and the right shift keys on the PC keyboard operate as
prefix keys, functionally equivalent to the gold [ f ] and the
blue [ g ] keys on the HP-16C. They let you activate the upper
and lower sets of functions assigned to each PC key. The left
shift key on the PC is used as a prefix key to activate the upper
set of functions. Likewise, the right shift key is used as a
prefix key to activate the lower set of functions. The prefix
keys are "sticky", that is, you press a prefix key and it remains
set, even after you release the key. When you press and release
a prefix key, the corresponding set of prefixes will highlight,
indicating which prefix was set. To clear a prefix key, use the
[PRFX] function.
For example, to activate the [HEX] function, press the letter 'e'
on the PC keyboard. On the other hand, the [DSZ] function key is
mapped to the same PC key as the [Hex] function but requires a
prefix key. To invoke the [DSZ] function, press and release the
right shift key, (the lower prefix key), and then press the
letter 'e'.
The prefix keys can also be invoked using the function keys [ f ]
and [ g ].
5.2 Clearing the Display and Prefix Keys
To clear a number in the display, press the [CLx] (Clear X
Register) key. The display will now contain the value 0. While
entering a number, you may clear the last digit entered with the
[BKSP] key. For example, if you meant to enter the number 1234
and mistakenly entered 1235, press [BKSP] and then press 4 to
correct the number. To clear a prefix key, i.e., the lower or
the upper prefix, press the [PREFIX] key. To clear all memory
storage registers, press [REG]. This key doesn't affect values
stored in the stack or the LastX register.
5.3 Entering Numbers
Numbers are entered into XACT-16C by using the numeric keys or
the numeric keypad for the numbers 0 through 9, and the keys
mapped to the hex numbers A through F on the PC keyboard. The
decimal point key is only operational in floating point mode and
is mapped to the '.' key on the numeric keypad. Notice that
XACT-16C will not accept certain numbers in integer mode
depending on the radix value being used. If the radix is Bin
- 17 -
(Binary), XACT-16C will only accept the numeric digits 0 and 1,
all others are ignored. When using the Octal radix, only the
digits 0 through 7 are valid, and so on. XACT-16C will accept
only as many entered digits as the current word size and
complement mode will allow. For example:
Keystroke Display Comment
================================================================
[Dec] Set decimal mode
8 [Wsize]
[2's] 2's comp. 8 bit
255 -1 Dec
[Unsgn] 255 Dec
The number 255 (FF Hex) cannot be represented using 2's
complement 8 bit math. Since the high order bit (interpreted as
a sign bit) is a 1, the 2's complement of the number is formed.
When unsigned math is used, the number is interpreted correctly.
Notice that if you tried to enter the number 256 (100 Hex) while
operating with a word size of 8 bits, the last digit would not
be accepted since 256 requires a word size of at least 9 bits to
be represented.
5.4 Short Cut Keys
You can use the Enter key on the PC, (also known as the Return
key) as the XACT-16C [ENTER] key as a short cut. Also, the '+',
'-', '*', and '/' keys adjacent to the numeric keypad function
as you would expect.
5.5 RPN Logic, the Stack, and the ENTER key
You may already be familiar with Reverse Polish Notation (RPN).
RPN is a type of calculator logic that eliminates the need for
the equals key and for parenthesis in calculator computations.
Instead, operands are entered into the calculator and separated
using the [ENTER] key. For example, to add the numbers 3 and 4:
Keystroke Display Comment
================================================================
[Dec] Decimal mode
3 [ENTER] 3 Dec
4 [ + ] 7 Dec Add
The result, 7, is now displayed. To multiply this result by 5:
Keystroke Display Comment
================================================================
5 [ * ] 35 Dec
- 18 -
The way that XACT-16C performs these calculations with RPN is by
using a stack. The stack consists of 4 registers: X, Y, Z, and
T. It is not generally necessary to understand the internal
workings of the stack but for completeness they will briefly be
discussed below.
Any number displayed is said to be in the X register. When the
[ENTER] key is pressed, a number in the X Register is pushed into
the Y Register and the previous number in the Y Register is
pushed into the Z Register. The previous number in the Z
register is pushed into the T Register. T stands for "Top" and
represents the top of the stack of numbers. The previous value
of the T register is lost. When a function key such as the [+]
key is pressed, the value held in the Y register is added to the
X register and this result is now stored in the X register.
Pressing [ENTER] does one other thing, it leaves the stack
disabled. This means that a number entered after the [ENTER] key
has been pressed is not pushed on the stack, it remains in the X
register. Most operations enable the stack so that when a new
number is entered, the previous contents of the X register are
pushed into the Y register. The most notable exceptions to this
rule are the [ENTER] and the [Clx] function keys.
5.6 Stack Operations
Roll Up - The [R|] function rolls up the stack. The X register
is copied into the Y register. The Y register is copied into
the Z register, and the Z register is copied into the T
register. The T register is "rolled around" into the X register.
Roll Down - The [R|] function rolls down the stack. The T
register is copied into the Z register. The Z register is
copied into the Y register, and the Y register is copied into
the X register. The X register is rolled around into the T
register.
X exchange Y - The [x<>y] function exchanges the contents of the
X and Y registers.
Last X register - The [LSTx] register holds the previous contents
of the X register before an operation was performed. The [LSTx]
register is used to restore the number entered if an incorrect
function key is mistakenly pressed.
5.7 Memories and Memory Operations
XACT-16C has 16 memories that can be used for storing and
recalling numbers. These memories are called memory registers
- 19 -
and are referred to as registers R0 through R9 and RA through
RF. To store a number in a memory, press [Sto] n, where n is a
number 0 through 9 (using the numeric keypad) or hex number [A]
through [F].
For example:
Keystroke Display Comment
================================================================
32 [Sto] [ A ] 32 Dec 32 in register RA
14 [Sto] 2 14 Dec 14 in register R2
[Rcl] [ A ] 32 Dec Recall reg. RA
[Rcl] 2 [ + ] 46 Dec Add to reg. R2
Notice in the preceding example that the [ A ] key is a mapped
XACT-16C key, not the letter 'A' on the PC keyboard (it is
invoked by pressing the F1 key on the PC keyboard.
5.8 The Index Register and Using Memories Indirectly
Memories can also be accessed indirectly using the Index
register. The index register is accessed with the [ I ]
function key. A number may be stored in the index register
using [Sto] [ I ] and recalled from the index register using
[Rcl] [ I ]. Also, the [x<>I] function key is used to exchange
the X register with the Index Register in the same fashion as the
[x<>y] function key is used to exchange the X and Y registers.
For the examples below, assume STATUS= 2-16-0000.
Keystroke Display Comment
================================================================
5 [Sto] [ I ] 5 Dec Register I= 5
20 [Sto] [(i)] 20 Dec Register 5= 20
[CLx] 0 Dec Clear X reg
[Rcl] 5 20 Dec Reg 5= 20
In the above example, the Indirect Index Register [(i)] was used
to store a number indirectly. The memory register accessed was
determined by the contents of the [I] register. Memories can
also be recalled indirectly using the operation [Rcl] [(i)], and
exchanged with the X register indirectly using the [x(i)]
function.
5.9 Modes of Operation and Word Size
XACT-16C operates in 2 modes, integer and floating point. Integer
mode is active when any of the following radix conversion
function keys are pressed: [HEX], [DEC], [OCT], [BIN]
- 20 -
These keys allow numbers in integer mode to be displayed in hex,
decimal, octal and binary respectively. In addition, numbers in
integer mode may be interpreted as unsigned values, or as 1's
complement or 2's complement numbers using word sizes from 2 to
64 bits.
5.10 1's Complement Numbers
To use 1's complement arithmetic, press [1's]. All numbers and
operations entered while in integer mode will be interpreted as
1's complement numbers. Pressing the [ChS] function key will
display the 1's complement of a number in the display.
5.11 2's Complement Numbers
Pressing [2's] will activate 2's complement arithmetic when in
integer mode. All operations subsequently performed will be done
using 2's complement arithmetic. 2's complement mode is the
default mode when XACT-16C is first loaded.
5.12 Unsigned Numbers
Pressing [Unsgn] will activate unsigned arithmetic when in
integer mode. All arithmetic operations will be interpreted
using unsigned math. When the [ChS] key is pressed, the result
has no meaning. However, the 2's complement of the number is
displayed along with the Overflow flag, shown as the letter 'G'
to the right of the number.
5.13 Word Size
In decimal mode, XACT-16C can operate using any word size from 2
to 64 bits. To set the word size, enter a number from 2 to 64
and press [Wsize]. Notice that if you're using a small word
size, say 4 bits, you won't be able to enter the number into the
calculator larger than +3 (if you're in 2's complement mode).
Thus, you won't be able to increase the word size to say 16 bits
without first resetting the word size to 64 bits.
To reset the word size to 64 bits, press 0 [Wsize]. This will
allow you to then set a word size of say 16 bits if, for
example, you were previously using a 4 bit word size and thus
couldn't enter the number 16 to set a 16 bit word size.
- 21 -
Changing word size will affect numbers held in the XACT-16C
registers. For example:
Keystroke Display Comment
================================================================
[Dec]
16 [Wsize] 16 bit word size
[2's] [Hex] 2's compl, hex
4E20 [ENTER] 4E20 Hex
8 [Wsize] 20 Hex 8 bits word size
Notice when the display was set to 8 bits, the number in the
display was truncated to 8 bits.
5.14 "SHOW" Functions
XACT-16C will display a number in a different radix for about 2
seconds, then revert back to the current radix, whenever the
[Show] function key, immediately above that radix key, is
pressed. For instance, say you have pressed [Bin] to select
binary as your default radix. You may view a number temporarily
in hex by pressing the [Show] key immediately above the [Hex] key
(press the left shift key, then press the letter 'e').
5.15 Display Windows
In decimal mode, XACT-16C can show up to 8 digits on it's
display. Since XACT-16C is capable of word sizes up to 64 bits,
in some cases, not all the digits can be shown on the display at
a time. For example:
Keystroke Display Comment
================================================================
[Hex]
10 [Wsize] 16 bit word
7B2 [Bin] <- 10110010 Bin More digits left
[Wndo] 1 111 -> Bin Leftmost 8 bits.
[Wndo] 0 <- 10110010 Bin Reset window
The number 7B2 Hex (11110110010 Bin) cannot be displayed within 8
digits. Only the lower order 8 bits are displayed. The [Wndo] 1
key sequence sets the display window to the next higher order 8
bits, bits 7 through 15. Likewise, [Wndo] 2 would be used to
display bits 8 through 23 and so on. In the current example,
the number 7B2 is an 11 bit number. Setting [Wndo] 2 would show a
blank display.
- 22 -
Windows may also be "scrolled" one digit at a time. To scroll
the window one digit to the right press [>>]. To scroll the
digit to the left, press [<<]. Window scrolling is reset back to
window 0 whenever an operation key affecting the value displayed
is pressed.
5.16 Flags
XACT-16C incorporates 6 built in "flags" which may be set or
cleared under either program control, or as the result of an
operation, or both. The flags are numbered 0 through 5. Flags
are active in integer mode.
The first 3 flags, 0 through 2, are used in programming only.
These flags can be set, cleared, and tested within a program.
These flags are discussed in detail in the section under
Programming.
Flag 3 is used to control the display of leading zeros in integer
mode. When set, a number in the display will be padded with
leading zeros (leading zeros will not be displayed when the [Dec]
radix is used). To set flag3:
Keystroke Display Comment
================================================================
[Hex]
10 [Wsize] 16 bit word, hex
3A [ENTER] 3A Hex
[SF] 3 003A Hex Set flag 3
[CF] 3 3A Hex Clear flag 3
Flag 4 is also known as the Carry (C) flag. It is set when the
result of an algebraic or bit manipulation function generates a
carry. When performing a subtraction, a carry is generated
whenever there is a borrow in the most significant bit.
Keystroke Display Comment
================================================================
[Hex]
10 [Wsize] [2's]
FF80 [ENTER] FF80 Hex (-128 Decimal)
100 [ + ] 80 Hex C Carry generated
1 [ + ] 81 Hex No carry
Flag 5 is also known as the Overflow (G) flag. It is set by an
arithmetic operation which would result in a value which cannot
be shown with the current word size and/or complement mode. When
Flag 5 is set, the letter 'G' appears in the display, indicating
an overflow. For example:
- 23 -
Keystroke Display Comment
================================================================
[Dec]
16 [Wsize] [2's]
32767 [ENTER] 32767 Dec
16384 [ + ] -16385 Dec G
In the above example, the result created an overflow and the 'G'
flag (overflow) was displayed.
5.17 Status
Pressing the [Stat] function key temporarily alters the display
to show the current complement mode, word size and flags 0
through 3. When [Stat] is pressed, the display appears similar to
the following:
2-16-0000
The value above indicates 2's complement mode, 16 bit word size,
and flags 3,2,1,0 are all cleared.
The first number, shown before the dash, indicates the complement
mode. It is either 0, 1, or 2, for unsigned, 1's complement, or
2's complement respectively. The next number indicates the
current word size in bits. It may range from 1 to 64. The last
4 digits indicate the status of flags 3,2,1,0 in that order. A
value of 1 indicates the flag is set, 0 indicates it is cleared.
- 24 -
6. Arithmetic, Bit Manipulation, and Logical Functions
6.1 Addition and Subtraction
XACT-16C can perform the operations of addition and subtraction
using decimal, hex, binary, and octal radix types as well as
floating point mode. For example, to add the numbers 3c0 hex,
and 126 octal, and then subtract 35 decimal, (assuming STATUS=
2-16-0000):
Keystroke Display Comment
================================================================
[Hex]
3C0 [ENTER] 3C0 Hex
[Oct] 1700 Oct
126 [ + ] 2026 Oct
[Dec] 1046 Dec
35 [ - ] 1011 Dec
The result is 1011 (decimal). The carry flag will be set when
the addition of 2 numbers generates a carry out of the most
significant bit, or when the subtraction of 2 numbers generates a
borrow from the most significant bit.
6.2 Multiplication and Division
Multiplication and division operations can be performed in any
available radix. Results of these operations may set or clear
flag 4 (carry) and flag 5 (overflow) just as in addition and
subtraction (except that multiplication does not affect flag 4).
In a division operation, only the integer portion of the result
is returned, the decimal point part is truncated. Flag 4 (carry)
will be set if the result of the division has a non-zero
remainder.
Keystroke Display Comment
================================================================
[Dec]
12 [ENTER] 12 Dec 12 in X register
4 [ * ] 48 Dec Multiply 12 * 4
5 [ / ] 9 Dec C C Indicates remainder
6.3 Remainder after Division
To compute the remainder after division, (also known as the mod
function), use the [RMD] function key. The [RMD] key will yield
the result of the Y register mod the X register with the sign of
- 25 -
the result set to be the same as the sign of X. In the example
below, assume STATUS= 2-16-0000.
Keystroke Display Comment
================================================================
[Dec]
52 [ENTER] 52 Dec 52 in Y register
7 [RMD] 3 Dec Remainder
6.4 Square Root
The [sqrtx] function can be used in either decimal or floating
point mode. In decimal mode, the fractional part of the result
is truncated just as it is in division. Likewise, flag 4 (carry)
will be set if the fractional part of the square root is non-
zero. Assuming STATUS= 2-16-0000:
Keystroke Display Comment
================================================================
[Dec]
26 [sqrtx] 5 Dec C
The carry flag indicates that a fractional part exists.
6.5 Absolute Value
This function will take the absolute value of a number in the X
register when the [Abs] key is pressed. In unsigned mode, this
function has no effect. Otherwise, a negative number will form
the 1's or 2's complement of the number.
6.6 Logical Functions
The [AND] function logically and's together the corresponding
bits in the X and Y registers and forms the result in the X
register. A particular bit of the result is set to 1 only if the
corresponding bits in both the X and Y registers was set to 1.
For example (assume STATUS= 2-16-0000):
Keystroke Display Comment
================================================================
[Bin]
1010 [ENTER] 1010 Bin
11 [AND] 10 Bin Result of "and"
- 26 -
The [OR] function forms a result by or'ing together corresponding
bits in the X and Y registers. A bit in the result will be set
to 1 if a corresponding bit in either the X or the Y registers
is set to 1. In the example below, assume STATUS= 2-16-0000:
Keystroke Display Comment
================================================================
[Bin]
1001 [ENTER] 1001 Bin
11 [OR] 1011 Bin Result of OR
With the [XOR] (Exclusive OR) function, a bit in the result is
set to 1 if either a corresponding bit in the X register or the Y
register, but not both, is set to 1. In the example below,
assume STATUS= 2-16-0000:
Keystroke Display Comment
================================================================
[Bin]
1001 [ENTER] 1001 Bin
11 [XOR] 1010 Bin Result of XOR
The [Not] function complements all the bits of the value in the X
register. This is equivalent to forming the 1's complement of
the number. In the example below, assume STATUS= 2-16-0000:
Keystroke Display Comment
================================================================
[Hex] 9 9 Hex
[Not] FFF6 Hex Result of NOT
6.7 Bit Functions
A specific bit can be set (1) or cleared (0) within a number. To
set a bit, the [SB] function key is used. The [CB] function is
used to clear a bit. A bit can also be tested to see if it's
set or cleared with the [B?] function. (See the section on
Programming for more information on testing bits). When setting
or clearing a bit, the number in which the bit is to be set, must
be in the Y register and the bit number in the X register. In
the example below, assume STATUS= 2-16-0000:
Keystroke Display Comment
================================================================
[Bin]
10000 [ENTER] 100000 Bin 100000 in Y register
10 [SB] 10100 Bin Set bit 2
To clear a bit in a number:
- 27 -
Keystroke Display Comment
================================================================
[Hex]
FFFF [ENTER] FFFF Hex FFFF in Y register
4 [CB] FFEF Hex Clear bit 4
6.8 Summing Bits
The number of bits in a word can be found by using the [#B]
function. This function takes a number in the X register, and
returns the number of '1' bits, also in the X register. In the
example below, assume STATUS= 2-16-0000:
Keystroke Display Comment
================================================================
[Bin] 1101 1101 Bin
[#B] 11 Bin
[DEC] 3 Dec 3 bits were set
6.9 Masking
The mask functions form a mask of '1' bits in the X register. The
number of '1' bits is set to the value in the X register before
the mask function key was pressed. A mask can be made as large
as the current word size. The [MaskR] function right justifies
the mask and the [MaskL] function left justifies the mask. In
the example below, assume STATUS= 2-16-0000:
Keystroke Display Comment
================================================================
[Bin]
100 [MaskR] 1111 Bin Mask right
[Hex] F Hex
2 [MaskL] C000 Hex Mask left
6.10 Left Justify
A word in the X register can be left-justified using the [LJ]
function key. This operation returns the left justified number
in the Y register. The X register contains the number of '0'
bits preceding the first '1' bit in the number before being left
justified. In the example below, assume STATUS= 2-08-0000:
Keystroke Display Comment
================================================================
[Bin]
111 [LJ] 101 Bin 5 leading zeros
[R|] 11100000 Bin Roll Down stack
Rolling down the stack shows the left justified number.
- 28 -
7. Shifting and Rotating Bits
7.1 Shift Functions
XACT-16C can perform shift operations on numbers when in integer
mode. Shifts can be either logical or arithmetic. A logical
shift simply shifts bits left or right, bringing in a zero bit
from the end. An arithmetic shift is similar except that it
preserves the sign bit when shifting. Both types of shifts can
shift into the carry, causing flag 4 (C) to be set or cleared
accordingly. In the examples below, assume STATUS= 2-08-0000:
Keystroke Display Comment
================================================================
[Bin]
1001 [SL] 10010 Bin Logical shift left
01000000 [SL] 10000000 Bin Logical shift left
[SL] 0 Bin C Shift into carry.
100000000 [ASR] 11000000 Bin Brings in sign bit
7.2 Rotate Functions
Rotate functions are like shift functions except that a bit
shifted out of one end of a word is brought back in at the other
end. As in shifting, rotations can be either left or right using
the [RL] or the [RR] functions. Assume STATUS= 2-08-0000:
Keystroke Display Comment
================================================================
10000010 [RL] 101 Bin C
Rotations may also be made "through the carry". The [RRC] and
the [RLC] functions respectively shift the low order or the high
order bit into the carry. The carry flag (flag 4) will be set if
the bit rotating into the carry was a '1'. The previous state of
the carry flag will be brought back around at the other end.
Keystroke Display Comment
================================================================
1 [RRC] 0 Bin C Rotates to carry
[RRC] 10000000 Bin Carry rotates
Rotate operations may also rotate more than 1 bit at a time with
the [RRn] [RLn] [RRCn] and [RLCn] functions. Each of these
functions use the value in the X register as a count of how many
times to rotate the value in the Y register. Assuming STATUS=
2-08-0000:
Keystroke Display Comment
================================================================
1000 [ENTER] 1000 Bin
100 [RLn] 10000000 Bin Rotate 4 times
- 29 -
8. Floating Point Mode
8.1 Converting to Floating Point Mode
In addition to integer mode, XACT-16C also operates in floating
point mode. In this mode, XACT-16C acts much like a second
"independent" calculator. Many functions operate in either
floating point mode or integer mode, for example the [sqrtx]
function. However, unlike integer mode, this function will not
truncate a result to an integer result, it will return a value
with up to 9 significant digits beyond the decimal point.
To convert XACT-16C to floating point mode:
Keystroke Display Comment
================================================================
[Float] 2 0.00 2 dec pt digits
You may press any number (using the numeric keypad) from 0 to 9
after pressing the [Float] key. The number you press will
determine the number of digits past the decimal point to be
displayed. For example:
Keystroke Display Comment
================================================================
26 [sqrtx] 5.10 2 dec pt digits
[Float] 5 5.09902 5 dec pt digits
Notice that when using 2 digits beyond the decimal point,
XACT-16C will "round" the next digit into the number displayed.
8.2 Floating Point Calculations
Calculations in floating point mode work in the same way as in
integer mode. However, there are a number of functions that
operate only in integer mode and some that operate only in
floating point mode. Generally speaking, all of the bit
manipulation, radix conversion, and logical functions are not
available in floating point mode.
- 30 -
The reciprocal function [1/x] and the exponent function [EEx] are
only available in floating point mode. To illustrate them, for
example:
Keystroke Display Comment
================================================================
[Float] 4 4 dec pt digits
12 [EEx] 3 12. +03
[ChS] 12. -03
[ENTER] 0.0120
.001 [ - ] 0.0110 Subtract
[1/x] 90.9091 Reciprocal
8.3 Returning to Integer Mode
To return to integer mode, press any of the following: [Hex],
[Dec], [Oct] or [Bin]. You may notice that the same value
appears in the display as before you converted to floating point
mode. In fact, all the memory registers, stack, etc., are
retained.
- 31 -
9. Programming XACT-16C
9.1 Introduction to Programming
XACT-16C may be programmed to "memorize" keystrokes for the
purpose of executing a program. Programs may use constructs of
conventional programming languages such as branching, looping,
data input and output, etc. The basics of programming XACT-16C
involve entering, editing, debugging and finally executing your
program.
9.2 Entering a Program
To begin entering a new program into XACT-16C, the calculator
must be placed in program mode by pressing the [P/R] function
key. When in program mode, subsequent keystrokes are simply
stored in the calculator's internal memory. The [P/R] key toggles
between program and run modes.
Keystroke Display Comment
================================================================
[P/R] 000- Program mode
[P/R] (as before) Run mode
The display shows 000-. This represents the current program line
number of the program you are entering. Line 000 is special in
that it always represents the beginning of program memory.
Let's enter a simple program:
Keystroke Display Comment
================================================================
[P/R]
[Prgm] 000- Clear pgm
[Lbl] [ A ] 001- 43 22 A Start pgm
[Hex] 002- 23
3 003- 3
[ENTER] 004- 36
4 005- 4
[ + ] 006- 10
[RTN] 007- 43 21 Last pgm line
[P/R] Run mode
This program simply adds the numbers 3 and 4 then finishes. The
first keystroke, [P/R] puts XACT-16C in program mode. The [Prgm]
key clears any programs previously in memory. Skipping over the
[Lbl] instruction for the moment, the [Hex] key is the second
program line in the program. In the display, 002- indicates
program line 2 (there are a maximum of 203 program lines
available). Just to the right of the program line is a code
which represents which key was pressed. The first digit of the
- 32 -
number indicates the row and the second indicates the column of
where the key is positioned on the XACT-16C screen. If you think
of all the keystrokes on the calculator face as being in a table
with 4 rows and 10 columns, the [Hex] function key is located in
the 2nd row and 3rd column, thus the program line displays 002-
23. Back to the first line of the program, it contains the
keystrokes [Lbl] [ A ] to refer to that line as a label. Labels
are used in XACT-16C in much the same way as they are in assembly
language or Basic programming. Labels can be locations used to
identify the start of a program, the location of a goto
instruction, or the location to call in a subroutine call.
Programs must begin with a label to identify where the program
starts. The program line for our label reads 001- 43 22 A. In
this case, since the [Lbl] key requires a prefix, the position of
the prefix key is the first value shown to the right of the
program line number. The number 43 indicates row 4, column 3,
which is the position of the [ g ] (or right shift) prefix key.
The last value displayed on program line 2 is the value 'A'.
Notice that it is not referred to by a location in the "table"
of XACT-16C function keys, but rather by it's numeric value
itself. All the numbers 0 through 9 and A through F are shown
as their numeric values when in programming mode.
Notice the use of the [RTN] function key at the end of the
program. This key must always be the last entered, it is
required to end the program. In the very last line of the
program, you will notice the [P/R] key. It is used to exit from
program mode so that we can run the program.
Now we have our program contained in memory, we can run it by
typing:
Keystroke Display Comment
================================================================
[GSB] [ A ] 7 Hex Result
The [GSB] (goto subroutine) function key is used to begin program
execution at the first instruction in the program following the
label, in this case the label was A. The [GSB] instruction can
also be used within a program, to perform a call to a
subroutine.
9.3 Labels in Programs
There are 16 labels available in programming, 0-9 and A-F. The
previous example used a label to identify the beginning of a
program. In general, a label is always necessary to begin a
program. Labels are also used as targets of [GTO] (goto)
instructions and [GSB] (goto subroutine) instructions. Labels
can also be used to separate programs from one another in
- 33 -
XACT-16C's program memory; as a way of keeping multiple programs
in memory at one time (although this is generally not necessary
since programs can be loaded as disk files).
9.4 Using Subroutines
A program can call a subroutine from within the program when the
[GSB] instruction is used within the program. For instance, the
instruction [GSB] 5 will transfer control to the program
instruction immediately following the instruction [Lbl] 5
contained elsewhere within the program. Control will transfer to
the label that identifies the subroutine. Subroutines can "nest",
that is one subroutine may call another which may call another,
and so on. The maximum level of subroutine nesting is 4.
9.5 Returning from a Program or Subroutine
The last instruction in a program must always be a [RTN]. This
tells the program to reset it's program line number to 000 (go
back to the beginning) and stop executing. The [RTN] instruction
is also the last instruction in a subroutine. In this case,
after the execution of the [RTN] instruction, control is
transferred back to the instruction following the subroutine
call.
9.6 Entering Data and the Run/Stop Key
There are generally 2 ways to get data into a program. The
easiest is to use the [Sto] instruction to store data in
registers prior to running the program. Then the program can
contain [Rcl] instructions to fetch the data from the register.
The second method is required when there is more data to be input
than available storage registers. It involves using the [R/S]
(run/stop) function key. When this key is encountered during
program execution, the program stops. At this point, you can
enter new data and then press the [R/S] key. The program will
begin running again.
For example, let's write a program which will accept input
numbers, one at a time, and "exclusive or" each number with the
number 3A9 Hex. The program will display the exclusive or'd
result after each input.
Keystroke Display Comment
================================================================
[P/R]
[Prgm] Clear program memory
[Lbl] 1 001- 43 22 1
- 34 -
[Hex] 002- 23
1 003- 1
0 004- 0
[WSIZE] 005- 42 44
0 006- 0
[ENTER] 007- 36
[Lbl] 2 008- 43 22 2
[R/S] 009- 31
[ENTER] 010- 36
3 011- 3
A 012- A
9 013- 9
[x<>y] 014- 34
[XOR] 015- 42 10
[GTO] 2 016- 22 2
[RTN] 017- 43 21
[P/R] Return to RUN mode
To execute the program:
Keystroke Display Comment
================================================================
[Gsb] 1 0 Wait for input data
1 [R/S] 3A8 Hex Result of 3a9 xor 1
F [R/S] 3A6 Hex Result of 3a9 xor F Hex
20 [R/S] 389 Hex Result of 3a9 xor 20 Hex
9.7 Branching Using the Index Register
In the previous example, we used a [Gto] instruction to branch to
a label, in this case, label 2. As previously mentioned, there
are 16 available labels, 0-9 and A-F. You can also use the index
register [I] to indirectly branch to a label, or indirectly call
a subroutine. If the [I] register contains a number representing
a label, the instructions [GTO] [I] and [GSB] [I] will indirectly
branch to a label or indirectly call a subroutine.
9.8 Program Loops Using the Index Register
XACT-16C contains 2 instructions that first increment or
decrement the index register and skip the next program line if
the index register is zero. These instructions are [Isz]
(increment and skip if zero), and [Dsz] (decrement and skip if
zero). They can be used to control loops where the number of
times to execute the loop is contained in the index register.
For example, a program fragment may look similar to the
following:
- 35 -
5 [STO] [ I ]
[LBL] [ B ]
(instructions within loop)
[DSZ]
[GTO] [ B ]
[RTN]
In this case, the instruction within the loop between the [Lbl]
[B] program line and the [Gto] [B] program line will be executed
5 times. After the 5th time, the index register will contain 0
and the [Gto] [B] instruction will be skipped. Instead, the
[Rtn] instruction will be executed.
9.9 Program Loops and Branches Using the X and Y Registers
XACT-16C can also make "conditional tests" based upon values
contained in the X and Y registers. There are 8 different
possible conditions in all. These functions each execute the
next instruction in the program if the condition is true, and
skip over it if the condition is false. The instructions are
defined as
[x<=y] true if x less than or equal to y
[x<0] true if x less than 0
[x>y] true if x greater than y
[x>0] true if x greater than 0
[x<>y] true if x not equal to y
[x<>0] true if x not equal to 0
[x=y] true if y equal to y
[x=0] true if x equal to 0
9.10 Branching Using Flags
The [F?] (text flag) function can be used to branch based on the
status of the flags. There are a total of 6 flags in XACT-16C,
identified as flags 0-5. The first 3 flags (0-2) are
programmable general purpose flags. Flag 3 is used to display
leading zeros. Flag 4 is the Carry (C) flag, and Flag 5 is the
overflow (G) flag. Any of the flags may be used in branch
tests. The example below illustrates a program fragment
utilizing flags testing:
- 36 -
(Program instructions)
[Lbl] 3
[SF] 3
[Gto] [ B ]
(Program instructions)
[Lbl] 4
[CF] 0
[Gto] [ B ]
(Program instructions)
[Lbl] [ B ]
[F?] 0 (test to see if flag 0 is set)
[Gto] [ C ] (transfer control to label C if flag 0 set)
[Gto] [ D ] (transfer control to label D if flag 0 clear)
If the program executes at label 3, flag 0 is set and control is
transferred to label B. At this point, since flag 0 was set,
control will transfer to label C. Likewise, if the program
executes at label 4, flag 0 is cleared, and thus, when control
is transferred to label B, the flag test will fail. This will
cause the [Gto] [ D ] instruction to be executed.
9.11 Branching On Bit Set/Clear
Programs can branch on the status of a specific bit set or clear
using the [B?] function. This function operates similarly to the
[F?] function.
9.12 The Single-Step Instruction
The [SSt] (single-step) instruction can be used in either program
mode or run mode. In program mode, pressing [SSt] will display
the next program line number in a program. In run mode, the
[SSt] function can be used to execute a program one step at a
time. This is useful for program debugging. The [BSt] (back-
step) instruction works like the [SSt] instruction in program
mode except that it displays the previous program line number in
a program. The [Bst] instruction does not operate in run mode.
- 37 -
9.13 Moving to a Program Line Number
You can move to a specific line number in either program mode or
run mode. Press [Gto] [ . ] nnn where nnn is a 3 digit number
between 0 and 203. In run mode, pressing [R/S] will begin
execution at that line number.
10 Appendix
10.1 Error Conditions
When an error is encountered during operation, XACT-16C will
display the word "Error" in the calculator's display, followed
by a 1 digit error code. These error codes are defined below:
Error 0 - Invalid math operation. This error is encountered
when an operation attempted division by 0 or square root of a
negative number.
Error 1 - Invalid identifier. A flag, window, or program line
number was out of range.
Error 2 - Invalid Bit Number. This happens when operations
attempt to set bits, mask bits, or rotate multiple bits greater
than the current word size.
Error 3 - Invalid Register. An attempt was made to access a
label or line number that is out of range.
Error 4 - Invalid label or line number. An attempt was made to
access a label or line number that is out of range.
Error 5 - Invalid subroutine nesting. A subroutine was nested
more than 4 levels deep.
- 38 -